import pandas as pd
import os 

current_path = os.getcwd()

# 读取两个 Excel 文件
df_a = pd.read_excel(current_path + "\\取张总副石金额.xlsx")
df_b = pd.read_excel("发票.xlsx")

# 使用 merge 函数根据 "货单编号"、"重量" 和 "粒数" 列进行右连接
merged_df = pd.merge(df_a, df_b, on=["货单编号"], how="right", suffixes=('_a', '_b'))

# 将 NaN 值填充为0
merged_df["金额_a"].fillna(0, inplace=True)
merged_df["金额_b"].fillna(0, inplace=True)

# 仅在 "金额_b" 为 0 且 "货单编号", "重量", "粒数" 完全匹配的情况下相加 "金额_a" 和 "金额_b"
merged_df["金额"] = merged_df.apply(lambda row: row["金额_a"] + row["金额_b"] if row["金额_b"] == 0 else row["金额_b"], axis=1)

# 更新 "金额_b" 列，保留 "金额_a" 的值或者使用相加后的值，但是要确保 "货单编号", "重量", "粒数" 完全匹配
merged_df["金额_b"] = merged_df.apply(lambda row: row["金额_a"] if row["金额_b"] == 0 and row["货单编号"] == row["货单编号"] and row["重量"] == row["重量"] and row["粒数"] == row["粒数"] else row["金额_b"], axis=1)

# 删除多余的列
merged_df.drop(columns=["金额_a"], inplace=True)

# 定义列顺序列表
desired_columns_order = ['状态', '货单编号', '图片', '厂编', '钻石尺寸', '手寸', '货品名称', '件数', '件重（g）', 
                         '净重（g）', '含耗重', '金价', '重量（主石）', '粒数（主石）', '单价（主石）', '金额（主石）', 
                         '主镶', '重量', '粒数', '单价', '金额', '红宝重量', '红宝价格', '露珠或分色费', '镶工费', 
                         '起版费', '工费', '配件费', '证书', '应付款']

# 重新排列 DataFrame 的列顺序
merged_df = merged_df.reindex(columns=desired_columns_order)

# 保存合并后的结果到 Excel 文件
merged_df.to_excel("发票.xlsx", index=False)
merged_df.to_excel("已将张总副石金额合并到发票.xlsx", index=False)
print("已将张总副石金额合并到发票")
